\documentclass[a4paper,12pt,oneside,titlepage,headings]{report}
\usepackage[latin1]{inputenc}
\usepackage{textcomp}
\usepackage{multirow}
\usepackage{amsmath}
\usepackage[pdftex]{color, graphicx}
\usepackage[centerlast]{caption}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LO]{\leftmark}
\fancyfoot[CO,LE]{\thepage}

\newtheorem{definition}{Definition}

\renewcommand{\chaptermark}[1]{\markboth{\textbf{\thechapter. #1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\textbf{\thesection. #1}}}

\renewcommand{\headrulewidth}{0.6pt}
\setlength{\headheight}{1.5\headheight}

\usepackage{color}
\definecolor{gray97}{gray}{.97}
\definecolor{gray75}{gray}{.75}
\definecolor{gray45}{gray}{.45}

\usepackage{listings}
% From http://crysol.inf-cr.uclm.es/node/909
\lstset{ frame=Ltb,
     framerule=0pt,
     aboveskip=0.5cm,
     framextopmargin=3pt,
     framexbottommargin=3pt,
     framexleftmargin=0.4cm,
     framesep=0pt,
     rulesep=.4pt,
     backgroundcolor=\color{gray97},
     rulesepcolor=\color{black},
     %
     stringstyle=\ttfamily,
     showstringspaces = false,
     basicstyle=\small\ttfamily,
     commentstyle=\color{gray45},
     keywordstyle=\bfseries,
     %
     numbers=left,
     numbersep=15pt,
     numberstyle=\tiny,
     numberfirstline = false,
     breaklines=true,
     %
     tabsize=2,
   }

% minimizar fragmentado de listados
\lstnewenvironment{listing}[1][]
   {\lstset{#1}\pagebreak[0]}{\pagebreak[0]}

\lstdefinestyle{consola}
   {basicstyle=\scriptsize\bf\ttfamily,
    backgroundcolor=\color{gray75},
   }

\lstdefinestyle{C++}
   {language=C++,
    basicstyle=\scriptsize\ttfamily,
   }

\thispagestyle{empty}  % No numbering in this page.

\begin{document}

\begin{minipage}[c][3cm][c]{1em}   % Empty space.
\end{minipage}

\begin{center}
\fontsize{32}{32}\selectfont
	\textbf{{Computer Graphics}}\\[1.5cm]
\fontsize{22}{22}\selectfont
	\textbf{{Final Project Report}}\\[1.5cm]

\fontsize{18}{18}\selectfont
June, 2010\\[8cm]
\end{center}

\begin{flushright}
\fontsize{14}{14}\selectfont
        \textbf{Gabriel Alises Cano}\\[.3cm]
	University of Castilla-La Mancha\\[.5cm]
\end{flushright}


\renewcommand{\baselinestretch}{1,5}
\large\normalsize
\newpage
\chapter{Participation in the project.}
As we agree Javier and I have worked in the part of the core of the project. We have worked together the most part of the time, but each one has implemented different operations in the Object3D class, but the most of algorithms are designed by the two, and the skeleton of the classes (most of constructor,...) are copied from the OREJ practice.

For example I implemented the move operation and his test at first implemented the operation changing the geometry of the object, but it was not necessary so I changed the operation calling the corresponding OpenGL primitive. Also I implemented the merge operation. This operation will use when is necessary fuse two objects in only one. As we can see in the code this operation modifies the object geometry adding the vertex and triangles from an object to another.

Then we think that might be useful a new variable state (with the corresponding getters an setters methods) to indicate the state of the object, there is useful, for example when we will draw the object we check the state and according to that we draw the object in a color or another.

Another decision we made was not to implement a new class Face because we have seen in one practice this class presents different problems.

Other thing that I implement is the Camera class, this class is very easy because is only three vectors and getters and setters method to access or change this variables.

It's necessary comment the test directory, this dir contains the testing for each operations implemented Object3D class.

Each test directory almost like another only changed the main.cpp because each test check different things.

Other important class is the Scene class because this class will be used by the GUI group and in this class we have many different methods, for example:
\begin{itemize}
\item Methods to access to the objects like get\_objects(), get\_selected\_objects(),... We have used a vector of Objects3D.
\item Methods to use the operations implemented in Object3D class. We think that this methods could be useful because when the GUI group clicked in a button of the operation we can use this class instead of Object3D class.
\item Methods to edition of the objects, for example select\_all()...
\end{itemize}

The most important thing we have to remember is the useful classes are the Scene an Object3D classes but the other classes are necessary for the rest classes operate correctly.
\newpage

\chapter{Little reflection about the project.}

I think that the idea of the project it's very interesting because I like the 3D graphics and here I learned how could the operations in the figures are implemented.

But I think there should be more revisions of the project, because today (the last day) we have not a executable version of the project. The principal problem I have encountered is the communication with the rest groups because we need to know the arguments of the functions for example we wanted to know the arguments of the extrude operation and we could not start until we knew the arguments. I also understand that it's difficult to match nine persons during the course, but there are different methods to connect as email, social networks,... I don't know why not we don't use it.

My opinion is that we have not know communicate between the groups this has been the principal problem.

Despite of all I think the project it's very interesting (as I said before) and the most important the project not impossible to implement for us, but I think everyone should have worked harder.

I would like to see the program running after all the work done.
\end{document}
